Random Access File Operations C++-এ একটি ধরনের ফাইল অপারেশন যা ফাইলের যেকোনো অংশে সরাসরি পৌঁছাতে সাহায্য করে, অর্থাৎ আপনি ফাইলের শুরু থেকে শেষ পর্যন্ত কেবল ধারাবাহিকভাবে পড়ার পরিবর্তে নির্দিষ্ট স্থান থেকে ফাইলের ডেটা পড়তে বা লিখতে পারবেন। এটি ফাইল স্ট্রিমের মাধ্যমে পজিশন পরিবর্তন করে কাজ করে, যার ফলে আপনি ফাইলের যেকোনো অংশে দ্রুত পৌঁছাতে পারেন।
C++-এ random access file operations সাধারণত fstream
বা **fstream
এর seekg()
এবং seekp()
ফাংশনগুলি ব্যবহার করে করা হয়। seekg()
ইনপুট ফাইলের জন্য এবং seekp()
আউটপুট ফাইলের জন্য ব্যবহৃত হয়।
seekg(offset, direction)
: ইনপুট ফাইল স্ট্রিমের অবস্থান পরিবর্তন করে।offset
: কতটা দূরে যেতে হবে তা নির্দেশ করে।direction
: কোথা থেকে গণনা করা হবে (ফাইলের শুরু, বর্তমান অবস্থান, অথবা ফাইলের শেষ)।std::ios::beg
: ফাইলের শুরু থেকে।std::ios::cur
: বর্তমান অবস্থান থেকে।std::ios::end
: ফাইলের শেষ থেকে।seekp(offset, direction)
: আউটপুট ফাইল স্ট্রিমের অবস্থান পরিবর্তন করে।tellg()
: ইনপুট ফাইল স্ট্রিমের বর্তমান অবস্থান (পজিশন) ফিরে আসে।tellp()
: আউটপুট ফাইল স্ট্রিমের বর্তমান অবস্থান ফিরে আসে।#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file;
file.open("example.txt", std::ios::in | std::ios::out); // ফাইল ওপেন
if (!file) {
std::cerr << "File could not be opened!" << std::endl;
return 1;
}
// ফাইলের 5ম বাইট থেকে শুরু করা
file.seekg(4, std::ios::beg); // 4 বাইট ফাইলের শুরু থেকে
std::string str;
std::getline(file, str); // ফাইল থেকে একটি লাইন পড়া
std::cout << "Data from the file: " << str << std::endl;
file.close(); // ফাইল বন্ধ করা
return 0;
}
এখানে, seekg(4, std::ios::beg)
ব্যবহার করে ফাইলের শুরু থেকে 4 বাইট অগ্রসর হয়েছে এবং তারপরে std::getline()
ফাংশন ব্যবহার করে একটি লাইন পড়া হয়েছে।
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file;
file.open("example.txt", std::ios::in | std::ios::out);
if (!file) {
std::cerr << "File could not be opened!" << std::endl;
return 1;
}
// ফাইলের 10ম বাইটে লেখার জন্য অবস্থান করা
file.seekp(9, std::ios::beg); // 9 বাইট ফাইলের শুরু থেকে
// নতুন ডেটা লেখার জন্য
file << "Hello, World!";
file.close();
return 0;
}
এখানে, seekp(9, std::ios::beg)
ব্যবহার করে ফাইলের 10ম বাইটে পৌঁছানো হয়েছে এবং তারপর নতুন ডেটা লিখে ফেলা হয়েছে।
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file;
file.open("example.txt", std::ios::out | std::ios::app); // append mode
if (!file) {
std::cerr << "File could not be opened!" << std::endl;
return 1;
}
// ফাইলের শেষে লেখা
file << "Appending new data at the end.\n";
file.close();
return 0;
}
এখানে std::ios::app
মোডে ফাইল ওপেন করা হয়েছে, যা ফাইলের শেষে ডেটা অ্যাপেন্ড করে।
আপনি tellg()
এবং tellp()
ফাংশন ব্যবহার করে ইনপুট এবং আউটপুট ফাইল স্ট্রিমের পজিশন চেক করতে পারেন।
#include <iostream>
#include <fstream>
int main() {
std::fstream file;
file.open("example.txt", std::ios::in | std::ios::out);
if (!file) {
std::cerr << "File could not be opened!" << std::endl;
return 1;
}
file.seekg(5, std::ios::beg); // ফাইলের 5ম বাইটে যাওয়া
std::cout << "Current position: " << file.tellg() << std::endl; // পজিশন দেখানো
file.seekp(10, std::ios::beg); // 10ম বাইটে যাওয়া
std::cout << "Current position: " << file.tellp() << std::endl; // পজিশন দেখানো
file.close();
return 0;
}
আউটপুট:
Current position: 5
Current position: 10
এখানে, tellg()
এবং tellp()
ফাংশন ব্যবহার করে ইনপুট এবং আউটপুট স্ট্রিমের বর্তমান অবস্থান মুদ্রিত হয়েছে।
seekg()
এবং seekp()
ফাংশনগুলি ইনপুট এবং আউটপুট ফাইলের অবস্থান পরিবর্তন করতে ব্যবহৃত হয়।tellg()
এবং tellp()
ফাংশনগুলি বর্তমান অবস্থান দেখতে ব্যবহৃত হয়।এই ধরনের অপারেশনগুলি ফাইল ম্যানিপুলেশনকে আরও নমনীয় ও দক্ষ করে তোলে এবং বিশেষ করে বড় ফাইল বা ডেটাবেসের কাজ করার জন্য অত্যন্ত উপকারী।
Read more